package br.com.ohyessoftware.sigc.infra.negocio;

import java.io.Serializable;
import java.sql.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Diego
 * 01/06/2011
 */
@Entity
@Table(name = "funcionario", schema = "sigc")
public class Funcionario implements Serializable {

    private static final long serialVersionUID = 1L;
    
    //atributos
    /******************************************************************************/
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "cod_funcionario")
    private Long codFuncionario;
    @Column(name = "nome")
    private String nome;
    @Column(name = "email")
    private String email;
    @Column(name = "cpf")
    private int cpf;
    @Column(name = "rg")
    private int rg;
    @Column(name = "salario")
    private float salario;
    @Column(name = "data_nascimento")
    private Date dataNascimento;
    @Column(name = "data_cadastro")
    private Date dataCadastro;
    @Column(name = "data_admissao")
    private Date dataAdmissao;
    @Column(name = "data_demissao")
    private Date dataDemissao;
    @Column(name = "numero")
    private int numero;
    @Column(name = "complemento")
    private String complemento;
    @Column(name = "carga_horaria")
    private int cargaHoraria;
    @Column(name = "comissao")
    private float comissao;
    @Column(name = "tipo_sanguineo")
    private String tipoSanguineo;

    //relacoes
    /******************************************************************************/
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_cargo", insertable = true, updatable = true)
    public Cargo cargo;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_endereco", insertable = true, updatable = true)
    public Endereco endereco;

    @OneToMany(mappedBy = "funcionario", fetch = FetchType.LAZY)
    private List<TelefoneFuncionario> telefoneFuncionarios;

    @OneToMany(mappedBy = "funcionario", fetch = FetchType.LAZY)
    private List<PedidoVenda> pedidoVendas ;


    //get e set
    /******************************************************************************/
    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public Long getCodFuncionario() {
        return codFuncionario;
    }

    public void setCodFuncionario(Long codFuncionario) {
        this.codFuncionario = codFuncionario;
    }

    public int getCpf() {
        return cpf;
    }

    public void setCpf(int cpf) {
        this.cpf = cpf;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public int getCargaHoraria() {
        return cargaHoraria;
    }

    public void setCargaHoraria(int cargaHoraria) {
        this.cargaHoraria = cargaHoraria;
    }

    public float getComissao() {
        return comissao;
    }

    public void setComissao(float comissao) {
        this.comissao = comissao;
    }

    public Date getDataAdmissao() {
        return dataAdmissao;
    }

    public void setDataAdmissao(Date dataAdmissao) {
        this.dataAdmissao = dataAdmissao;
    }

    public Date getDataDemissao() {
        return dataDemissao;
    }

    public void setDataDemissao(Date dataDemissao) {
        this.dataDemissao = dataDemissao;
    }

    public int getRg() {
        return rg;
    }

    public void setRg(int rg) {
        this.rg = rg;
    }

    public float getSalario() {
        return salario;
    }

    public void setSalario(float salario) {
        this.salario = salario;
    }

    public String getTipoSanguineo() {
        return tipoSanguineo;
    }

    public void setTipoSanguineo(String tipoSanguineo) {
        this.tipoSanguineo = tipoSanguineo;
    }

    public List<PedidoVenda> getPedidoVendas() {
        return pedidoVendas;
    }

    public void setPedidoVendas(List<PedidoVenda> pedidoVendas) {
        this.pedidoVendas = pedidoVendas;
    }

    public List<TelefoneFuncionario> getTelefoneFuncionarios() {
        return telefoneFuncionarios;
    }

    public void setTelefoneFuncionarios(List<TelefoneFuncionario> telefoneFuncionarios) {
        this.telefoneFuncionarios = telefoneFuncionarios;
    }

}
